package pl.wroc.pwr.mss.logic.domain;

/**
 * Enumeracja rodzajów muzyki.
 * 
 * @author mjagus
 */
public enum SongGenre
{
    BLUES(0, "Blues"),
    CLASSIC_ROCK(1, "Classic Rock"),
    COUNTRY(2, "Country"),
    DANCE(3, "Dance"),
    DISCO(4, "Disco"),
    FUNK(5, "Funk"),
    GRUNGE(6, "Grunge"),
    HIPHOP(7, "Hip-Hop"),
    JAZZ(8, "Jazz"),
    METAL(9, "Metal"),
    NEW_AGE(10, "New Age"),
    OLDIES(11, "Oldies"),
    OTHER(12, "Other"),
    POP(13, "Pop"),
    RNB(14, "R&B"),
    RAP(15, "Rap"),
    REGGAE(16, "Reggae"),
    ROCK(17, "Rock"),
    TECHNO(18, "Techno"),
    INDUSTRIAL(19, "Industrial"),
    ALTERNATIVE(20, "Alternative"),
    SKA(21, "Ska"),
    DEATH_METAL(22, "Death Metal"),
    PRANKS(23, "Prank"),
    SOUNDTRACK(24, "Soundtrack"),
    EUROTECHNO(25, "Euro-Techno"),
    AMBIENT(26, "Ambient"),
    TRIPHOP(27, "Trip-Hop"),
    VOCAL(28, "Vocal"),
    JAZZ_FUNK(29, "Jazz+Funk"),
    FUSION(30, "Fusion"),
    TRANCE(31, "Trance"),
    CLASSICAL(32, "Classical"),
    INSTRUMENTAL(33, "Instrumental"),
    ACID(34, "Acid"),
    HOUSE(35, "House"),
    GAME(36, "Game"),
    SOUND_CLIP(37, "Sound Clip"),
    GOSPEL(38, "Gospel"),
    NOISE(39, "Noise"),
    ALTERNATIVE_ROCK(40, "Alternative Rock"),
    BASS(41, "Bass"),
    SOUL(42, "Soul"),
    PUNK(43, "Punk"),
    SPACE(44, "Space"),
    MEDITATIVE(45, "Meditative"),
    INSTRUMENTAL_POP(46, "Instrumental Pop"),
    INSTRUMENTAL_ROCK(47, "Instrumental Rock"),
    ETHNIC(48, "Ethnic"),
    GOTHIC(49, "Gothic"),
    DARKWAVE(50, "Darkwave"),
    TECHNO_INDUSTRIAL(51, "Techno Industrial"),
    ELECTORNIC(52, "Electronic"),
    POP_FOLK(53, "Pop-Folk"),
    EURODANCE(54, "Euro-dance"),
    DREAM(55, "Dream"),
    SOUTHERN_ROCK(56, "Southern Rock"),
    COMEDY(57, "Comedy"),
    CULT(58, "Cult"),
    GANGSTA(59, "Gangsta"),
    TOP_40(60, "Top 40"),
    CHRISTIAN_RAP(61, "Christian Rap"),
    POP_FUNK(62, "Pop/Funk"),
    JUNGLE(63, "Jungle"),
    NATIVE_AMERICAN(64, "Native American"),
    CABARET(65, "Cabaret"),
    NEW_WAVE(66, "New Wave"),
    PSYCHADELIC(67, "Psychadelic"),
    RAVE(68, "Rave"),
    SHOWTUNES(69, "Showtunes"),
    TRAILER(70, "Trailer"),
    LOFI(71, "Lofi"),
    TRIBAL(72, "Tribal"),
    ACID_PUNK(73, "Acid Punk"),
    ACID_JAZZ(74, "Acid Jazz"),
    POLKA(75, "Polka"),
    RETRO(76, "Retro"),
    MUSICAL(77, "Musical"),
    ROCK_N_ROLL(78, "Rock & Roll"),
    HARD_ROCK(79, "Hard Rock"),
    FOLK(80, "Folk"),
    FOLK_ROCK(81, "Folk Rock"),
    NATIONAL_FOLK(82, "National Folk"),
    SWING(83, "Swing"),
    FAST_FUSION(84, "Fast Fusion"),
    BEBOP(85, "Bebop"),
    LATIN(86, "Latin"),
    REVIVAL(87, "Revival"),
    CELTIC(88, "Celtic"),
    BLUEGRASS(89, "Bluegrass"),
    AVANTGARDE(90, "Avantgarde"),
    GOTHIC_ROCK(91, "Gothic Rock"),
    PROGRESSIVE_ROCK(92, "Progressive Rock"),
    PSYCHADELIC_ROCK(93, "Psychadelic Rock"),
    SYMPHONIC_ROCK(94, "Symphonic Rock"),
    SLOW_ROCK(95, "Slow Rock"),
    BIG_BAND(96, "Big Band"),
    CHORUS(97, "Chorus"),
    EASY_LISTENING(98, "Easy Listening"),
    ACOUSTIC(99, "Acoustic"),
    HUMOUR(100, "Humour"),
    SPEECH(101, "Speech"),
    CHANSON(102, "Chanson"),
    OPERA(103, "Opera"),
    CHAMBER_MUSIC(104, "Chamber Music"),
    SONATA(105, "Sonata"),
    SYMPHONY(106, "Symphony"),
    BOOTY_BRASS(107, "Booty Brass"),
    PRIMUS(108, "Primus"),
    PORN_GROOVE(109, "Porn Groove"),
    SATIRE(110, "Satire"),
    SLOW_JAM(111, "Slow Jam"),
    CLUB(112, "Club"),
    TANGO(113, "Tango"),
    SAMBA(114, "Samba"),
    FOLKLORE(115, "Folklore"),
    BALLAD(116, "Ballad"),
    POWER_BALLAD(117, "Power Ballad"),
    RHYTMIC_SOUL(118, "Rhytmic Soul"),
    FREESTYLE(119, "Freestyle"),
    DUET(120, "Duet"),
    PUNK_ROCK(121, "Punk Rock"),
    DRUM_SOLO(122, "Drum Solo"),
    A_CAPELA(123, "A Capela"),
    EUROHOUSE(124, "Euro-House"),
    DANCE_HALL(125, "Dance Hall");

    /**
     * Identyfikator rodzaju muzyki. Zgodny z tagami ID3.
     */
    private int id;

    /**
     * Nazwa rodzaju muzyki.
     */
    private String name;

    /**
     * Iniciuje rodzaj muzyki o danym identyfikatorze i nazwie.
     * 
     * @param id Dany identyfikator rodzaju muzyki, zgodny z tagami ID3
     * @param name Nazwa rodzaju muzyki
     */
    private SongGenre(int id, String name)
    {
        this.id = id;
        this.name = name;
    }

    /**
     * @return Identyfikator danego rodzaju muzyki. Zgodny z identyfikatorem
     * umieszczonym w tagach ID3.
     */
    public int getId()
    {
        return id;
    }

    /**
     * @return Nazwa danego rodzaju muzyki.
     */
    public String getName()
    {
        return name;
    }

    /**
     * Zwraca nazwe tego rodzaju muzyki.
     * 
     * @return Nazwa tego rodzaju muzyki
     */
    @Override
    public String toString()
    {
        return name;
    }
}
